package com.lanchetech.merchant.service;


import com.lanchetech.bean.request.PageReq;
import com.lanchetech.bean.request.ShopAmountReq;
import com.lanchetech.bean.request.TenantFeatureReq;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.vo.CustomPageEditVO;
import com.lanchetech.bean.vo.ShopAmountVO;
import com.lanchetech.bean.vo.ShopCollectionVO;
import com.lanchetech.common.exception.ResultCodeException;
import com.lanchetech.entity.*;

import java.math.BigDecimal;
import java.util.List;

public interface StoreService {

    ResultData<Shop> getShopDetail( Merchant merchant);

    ResultData<Tenant> getContract(Merchant merchant);

    ResultData<Long> editContract(Tenant tenant, Integer step);

    BaseResp editTenantDescription(Merchant merchant, Tenant tenant);

    BaseResp editTenantImageUrl(Merchant merchant, Tenant tenant);

    BaseResp editStoreRecommendSpu(Merchant merchant, List<Long> spuIds);

    BaseResp editTenantFeature(Merchant merchant, TenantFeatureReq req);

    ResultData<List<Spu>> getRecommendSpuList(Merchant merchant);

    BaseResp editCustomPage(CustomPageEditVO req);

    ResultData<CustomPageEditVO> getCustomPageDetail( Long id);

    BaseResp deleteCustomPage(Long id);

    ResultData<BasePageResp<CustomPage>> getCustomPage(PageReq req);

    ResultData<List<TenantConfig>> getAllTenantConfig();

    BaseResp editTenantConfig(TenantConfig req);

    BaseResp deleteTenantConfig(Long id);

    ResultData<BasePageResp<ShopAmountVO>> getShopAmountPage(ShopAmountReq req);

    BaseResp editShopAvatar(Shop req);

    BaseResp editShopNickname(Shop req);

    BaseResp editShopAfterSalePhone(Shop req);

    BaseResp editShopAfterSaleAddress(Shop req);

    BaseResp editShopReturnAddress(Shop req);

    ResultData<BasePageResp<ShopCollectionVO>> getShopCollectionPage(PageReq req);

    BaseResp editShopIntroduction(CompanyIntroduction req);

    BaseResp editAutoReplyFormat(String replyFormat);

    ResultData<CompanyIntroduction> getShopIntroduction();

    BaseResp setStoreIdentity(Long userId) throws ResultCodeException;

    void agencyDiscount(Long userId, BigDecimal discount) throws ResultCodeException;
}